Лабораторна робота № 1

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2012
Тип роботи:
Лабораторна робота
Предмет:
Програмування
Група:
КІ

Частина тексту файла

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ, МОЛОДІ ТА СПОРТУ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра ЕОМ / Лабораторна робота № 1 . ОСОБЛИВОСТІ ПРОГРАМУВАННЯ З ВИКОРИСТАННЯМ 32 РОЗРЯДНОГО АСЕМБЛЕРА Мета роботи: Ознайомитись з програмною моделлю 32 розрядних процесорів Intel та оволодіти навиками створення програм, використовуючи 32 розрядний асемблер. ТЕОРЕТИЧНІ ВІДОМОСТІ Програмна модель комп'ютера, частиною якої є програмна модель мікропроцесора, яка містить 32 регістри в тій чи іншій мірі доступних для використання програмістом. Дані регістри можна розділити на дві великі групи: 16 регістрів користувача; 16 системних регістрів. У програмах на мові асемблера регістри використовуються дуже інтенсивно. Більшість регістрів мають певне функціональне призначення. Регістри користувача Як випливає з назви, призначеними для користувача регістри називаються тому, що програміст може використовувати їх при написанні своїх програм. До цих регістрів відносяться (рис.1): вісім 32-бітових регістрів, які можуть використовуватися програмістами для зберігання даних і адрес (їх ще називають регістрами загального призначення (РЗП)): eax/ax/ah/al; ebx/bx/bh/bl; edx/dx/dh/dl; ecx/cx/ch/cl; ebp/bp; esi/si; edi/di; esp/sp. шість сегментних регістрів: cs, ds, ss, es, fs, gs; регістри управління та стану: регістр прапорів eflags/flags; регістр покажчика команди eip/ip. Чому багато з цих регістрів приведені з розділовою межею? (рис. 1) Ні, це не різні регістри — це частини одного великого 32-розрядного регістра. Їх можна використовувати в програмі як окремі об'єкти. Так зроблено для забезпечення працездатності програм, написаних для молодших 16-розрядних моделей мікропроцесорів фірми Intel, починаючи з i8086. Мікропроцесори i486 і Pentium мають в основному 32-розрядні регістри. Їх кількість, за винятком сегментних регістрів, таке ж, як і у i8086, але розмірність більше, що і відбито в їх позначеннях — вони мають приставку e (Extended). Регістри загального призначення Всі регістри цієї групи дозволяють звертатися до своїх “молодших” частин (див. рис. 1). Відмітимо, що використовувати для самостійної адресації можна тільки молодші 16 і 8-бітові частини цих регістрів. Старші 16 біт цих регістрів як самостійні об'єкти недоступні. До РЗП відносяться: eax/ax/ah/al (Accumulator register) — акумулятор. Застосовується для зберігання проміжних даних. У деяких командах використання цього регістра обов'язкове; ebx/bx/bh/bl (Base register) — базовий регістр. ЗАВДАННЯ Створити 0*.exe програму, яка реалізовує обчислення, заданого варіантом виразу. A={a[i]} – попередньозаданий масив з N чисел. c, d - константи. Переконатися у правильності роботи програми використовуючи VKDebug. Скласти звіт про виконану роботу з приведенням тексту програми. 14. Знайти скільки нульових елементів в масиві A={a[i]} Код програми .586 ; використати плоску модель пам'яті і узгодження імен stdcall .model flat, stdcall option casemap: none ; оголошення службових процедур, макросів, змінних, констант include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\masm32.inc include \masm32\include\debug.inc include \masm32\include\user32.inc ; підключення службових бібліотек includelib \masm32\lib\kernel32.lib includelib \masm32\lib\masm32.lib includelib \masm32\lib\debug.lib includelib \masm32\lib\user32.lib .data Arr dd 5,4,0,0,0,0,2,0,5,6,0,6,0,4,8,12,4,0,9,0 Zeros dd 0 L dd 20 .code start: mov ecx, 0 Start_1: mov eax, [Arr + ecx*4] PrintDec eax .if eax == 0 add Zeros, 1 mov eax, Zeros .endif inc ecx cmp ecx, L jnz Start_1 PrintDec Zeros, "Result: " invoke ExitProcess, NULL ; виклик процедури завершення процесу end start Результат виконання програми / Висновок: я ознайомився з програмною моделлю 32 розрядних процесорів Intel та оволодів навиками створення програм, використовуючи 32 розрядний асемблер.
Антиботан аватар за замовчуванням

25.11.2012 18:11

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини